1
การเปลี่ยนผ่านสู่การใช้งานจริง: ทัศนคติในการจัดวางระบบ
EvoClass-AI002บทเรียนที่ 10
00:00

การเปลี่ยนผ่านสู่การใช้งานจริง: ทัศนคติในการจัดวางระบบ

โมดูลสุดท้ายนี้ช่วยปิดช่องว่างระหว่างงานวิจัยที่สำเร็จ — ซึ่งเราได้ผลการจำแนกที่แม่นยำสูงในเครื่องมือบันทึกข้อมูล — กับการทำงานที่เชื่อถือได้ การจัดวางระบบ (Deployment) คือกระบวนการสำคัญที่แปลงโมเดล PyTorch ให้กลายเป็นบริการขนาดเล็กที่มีความสมบูรณ์เอง และสามารถให้บริการผลลัพธ์ได้อย่างมีประสิทธิภาพแก่ผู้ใช้ปลายทาง โดยมีเวลาตอบสนองต่ำและบริการที่มีความสมบูรณ์เอง ความสามารถในการให้บริการผลลัพธ์อย่างมีประสิทธิภาพแก่ผู้ใช้ปลายทางด้วยเวลาตอบสนองต่ำและความสามารถในการทำงานต่อเนื่องสูง

1. การเปลี่ยนทัศนคติสู่การใช้งานจริง

สภาพแวดล้อมทดลองของเครื่องมือบันทึกข้อมูล (Jupyter notebook) มีลักษณะเก็บสถานะและไม่แข็งแรงพอสำหรับการใช้งานจริง เราต้องปรับโครงสร้างโค้ดจากแบบการเขียนโปรแกรมทดลองมาเป็นส่วนประกอบที่มีโครงสร้างและแยกส่วน ซึ่งเหมาะสมกับการรับคำขอพร้อมกัน ลดการใช้ทรัพยากร และรวมเข้ากับระบบที่ใหญ่กว่าได้อย่างราบรื่น

การประมวลผลด้วยเวลาตอบสนองต่ำ: การทำให้เวลาการคาดการณ์คงที่ต่ำกว่าเกณฑ์ที่ตั้งไว้ (ตัวอย่างเช่น $50\text{ms}$) ซึ่งเป็นสิ่งสำคัญสำหรับแอปพลิเคชันที่ต้องการผลลัพธ์ทันที
ความสามารถในการทำงานต่อเนื่องสูง: การออกแบบบริการให้มีความน่าเชื่อถือ ไม่มีสถานะ และสามารถกลับมาทำงานได้รวดเร็วหลังเกิดข้อผิดพลาด
ความสามารถในการทำซ้ำได้: การประกันว่าโมเดลที่จัดวางและสภาพแวดล้อม (ขึ้นกับการพึ่งพา น้ำหนัก ค่าตั้งค่า) ตรงกับผลการตรวจสอบจากการวิจัยอย่างแม่นยำ
โฟกัส: บริการโมเดล
แทนที่จะจัดวางสคริปต์ฝึกอบรมทั้งหมด เราจะจัดวางแค่เวอร์ชันที่มีขนาดเล็กและมีความสมบูรณ์เอง ซึ่งต้องจัดการเพียงสามงานเท่านั้น: โหลดอาร์ติแฟกต์ของโมเดลที่ได้รับการปรับแต่ง ประมวลผลข้อมูลนำเข้า และดำเนินการคำนวณไปข้างหน้าเพื่อส่งผลลัพธ์กลับมา
inference_service.py
เทอร์มินัลbash — uvicorn-service
> เตรียมพร้อมแล้ว คลิก "จำลองลำดับการจัดวางระบบ" เพื่อเริ่มต้น
>
เครื่องมือตรวจสอบอาร์ติแฟกต์สด

จำลองลำดับการดำเนินการเพื่อดูอาร์ติแฟกต์การใช้งานจริงที่ถูกโหลดแล้ว
คำถามที่ 1
ฟีเจอร์ใดของเครื่องมือบันทึกข้อมูล (Jupyter notebook) ที่ทำให้มันไม่เหมาะสมสำหรับการจัดวางระบบในงานจริง?
มันใช้โค้ดภาษา Python เป็นหลัก
มันมีลักษณะเก็บสถานะโดยธรรมชาติและใช้ทรัพยากรมาก
มันไม่สามารถเข้าถึงหน่วยประมวลผลกราฟิก (GPU) โดยตรงได้
คำถามที่ 2
จุดประสงค์หลักของการแปลงโมเดล PyTorch เป็น TorchScript หรือ ONNX ก่อนการจัดวางระบบคืออะไร?
การปรับแต่งเพื่อให้ทำงานเร็วขึ้นบนภาษา C++ และลดความพึ่งพาภาษา Python
เพื่อป้องกันการโจรกรรมโมเดลหรือการวิเคราะห์ย้อนกลับ
เพื่อจัดการการเตรียมข้อมูลนำเข้าอัตโนมัติ
คำถามที่ 3
เมื่อออกแบบ API สำหรับการใช้งานจริง ควรโหลดน้ำหนักของโมเดลเมื่อใด?
เพียงครั้งเดียว ตอนที่บริการเริ่มต้น
ที่เริ่มต้นแต่ละคำขอการคาดการณ์
เมื่อได้รับคำขอแรกเข้าสู่บริการ
ภารกิจ: กำหนดบริการที่มีขนาดเล็กที่สุด
วางแผนข้อกำหนดด้านโครงสร้างสำหรับบริการที่มีเวลาตอบสนองต่ำ
คุณต้องจัดวางโมเดลจำแนกภาพที่ซับซ้อน (ขนาด $1\text{GB}$) ที่ต้องการการเตรียมข้อมูลภาพเฉพาะเจาะจง ต้องรองรับคำขอได้ $50$ คำขอต่อวินาที
ขั้นตอนที่ 1
เพื่อให้มั่นใจว่ามีอัตราการไหลสูงและเวลาตอบสนองเฉลี่ยต่ำ โครงสร้างการเปลี่ยนแปลงที่สำคัญที่สุดสำหรับสคริปต์ภาษา Python คืออะไร?
คำตอบ:
ปรับโครงสร้างโค้ดให้เป็นโมดูลที่แยกจากกัน (การเตรียมข้อมูล, นิยามโมเดล, ตัวประมวลผลคำขอ) และรับประกันว่ากระบวนการทั้งหมดถูกบรรจุไว้ในคอนเทนเนอร์
ขั้นตอนที่ 2
อาร์ติแฟกต์ที่จำเป็นขั้นต่ำที่สุดที่ต้องส่ง นอกเหนือจากน้ำหนักที่ฝึกเสร็จแล้ว คืออะไร?
คำตอบ:
โค้ด/นิยามคลาสที่ใช้สำหรับการเตรียมข้อมูล และนิยามสถาปัตยกรรมของโมเดล ซึ่งถูกจัดรูปแบบและรวมกับน้ำหนัก t